package me.sealer.ssm.config;

import me.sealer.ssm.token.DefaultTokenManager;
import me.sealer.ssm.token.TokenManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 功能描述： $ TokenManagerConfig
 *
 * @author sealer
 * @email 1178884049@qq.com
 * @date 2019年12月17日 17时02分22秒
 */
@Configuration
public class TokenManagerConfig {
    /**
     * 验证码：字母大小写+数字+验证不区分大小写
     *
     * @return imageTokenManager
     */
    @Bean
    public TokenManager imageTokenManager() {
        return DefaultTokenManager.builder()
                .maxEntryNumber(3)
                .delayTime(300)
                .tokenListName("_SSM_IMAGE_TOKEN_LIST")
                .tokenName("imageTokenName")
                .tokenLength(4)
                .ignoreCase(true)
                /*去除一些人难识别的字符： 0、1、2、l、o、z*/
                .chars("3456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxy")
                .build();
    }

    /**
     * 验证码~纯数字：手机验证码
     *
     * @return phoneTokenManager
     */
    @Bean
    public TokenManager phoneTokenManager() {
        return DefaultTokenManager.builder()
                .maxEntryNumber(3)
                .delayTime(300)
                .tokenListName("_SSM_PHONE_TOKEN_LIST")
                .tokenName("phoneTokenName")
                .tokenLength(6)
                .ignoreCase(false)
                /*纯数字验证码*/
                .chars("0123456789")
                .verifiedFields(new String[]{"phoneNumber"})
                .build();
    }

    /**
     * 防止重复提交
     *
     * @return resubmitTokenManager
     */
    @Bean
    public TokenManager resubmitTokenManager() {
        return DefaultTokenManager.builder()
                .maxEntryNumber(3)
                .delayTime(600)
                .tokenListName("_SSM_RESUBMIT_TOKEN_LIST")
                .tokenName("resubmitTokenName")
                .tokenLength(8)
                .ignoreCase(false)
                /*不忽略难辨别字符， 因为该tokenManager不用人识别， 系统自动上送*/
                .chars("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
                .build();
    }
}
